package day06.poly;


import day06.extend.Animal;
import day06.extend.Cat;
import day06.extend.Dog;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 * @date 2019/7/22 0022
 */
public class TestAnimalPoly {
    public static void main(String[] args) {
        Animal cat = new Cat("咪咪",100.0);
        //对象的编译时类型决定了对象的访问能力.Animal就是编译时类型
        //对象只能访问到编译时类型或者编译时类型的父类中的所有的非私有的成员.
        //animal.catchMouse();
        cat.spark();

        Animal dog = new Dog("哮天犬",120.0);
        //对象的运行时类型决定了对象的行为能力
        //对象在执行方法的时候,会调用运行时类型中重写之后的方法.
        dog.spark();

//        多态 - "多种形态" - ：同一操作作用于不同的对象，可以有不同的解释，
//        产生不同的执行结果。在运行时，可以通过指向基类的指针，来调用实现派生类中的方法。
    }
}
